package com.xbongbong.pro.enums;

import com.xbongbong.paas.enums.FieldTypeEnum;
import lombok.Getter;

import java.util.HashSet;
import java.util.Set;

/**
 * 可编辑字段
 * @author 吴峰
 * @version v1.0
 * @date 2019/3/18 16:09
 * @since v1.0
 */
@Getter
public enum EditFieldTypeEnum {

    /**
     * 以下为可编辑字段
     */
    TEXT(FieldTypeEnum.TEXT),
    // 多行文本
    TEXTAREA(FieldTypeEnum.TEXTAREA),
    //数字
    NUM(FieldTypeEnum.NUM),
    // DateTimeEnum
    DATETIME(FieldTypeEnum.DATETIME),
    // radiogroup 单选按钮
    RADIO_GROUP(FieldTypeEnum.RADIO_GROUP),
    // 复选框组：checkboxgroup
    CHECKBOX_GROUP(FieldTypeEnum.CHECKBOX_GROUP),
    // 下拉框:combo
    COMBO(FieldTypeEnum.COMBO),
    // 下拉框复选：combocheck
    COMBO_CHECK(FieldTypeEnum.COMBO_CHECK),
    // 关联业务多选，比如选择关联客户（多选）
    LINK_BUSINESS_MULTI(FieldTypeEnum.LINK_BUSINESS_MULTI),
    // 勾选+下拉选择，比如访客计划中的执行人
    CHECK_COMBO(FieldTypeEnum.CHECK_COMBO),
    // 关联业务+下拉，比如跟进记录的关联客户
    LINK_BUSINESS_COMBO(FieldTypeEnum.LINK_BUSINESS_COMBO),
    // 员工选择
    SELECT_DEPARTMENT(FieldTypeEnum.SELECT_DEPARTMENT),
    // 星级
    STAR(FieldTypeEnum.STAR),
    // 下拉+关联业务选择，比如跟进记录的跟进业务
    COMBO_LINK_BUSINESS(FieldTypeEnum.COMBO_LINK_BUSINESS),
    CATEGORY_ID(FieldTypeEnum.CATEGORY_ID),
    // 标签
    LABEL(FieldTypeEnum.LABEL),
    // 所属部门
    DEPARTMENTID(FieldTypeEnum.DEPARTMENTID),
    //应收账期
    RECEIVABLE_PERIOD(FieldTypeEnum.ACCOUNT_PERIOD),
    // 成员单选
    USER(FieldTypeEnum.USER),
    ;

    private FieldTypeEnum fieldTypeEnum;

    EditFieldTypeEnum(FieldTypeEnum fieldTypeEnum) {
        this.fieldTypeEnum = fieldTypeEnum;
    }

    public static EditFieldTypeEnum getByType(Integer type) {
        for(EditFieldTypeEnum editFieldTypeEnum: values()){
            if(editFieldTypeEnum.getFieldTypeEnum().getType().equals(type)) {
                return editFieldTypeEnum;
            }
        }
        return null;
    }

    public static Set<Integer> getEditFieldTypeSet() {
        Set<Integer> editFieldTypeSet = new HashSet<>();
        for(EditFieldTypeEnum item: values()) {
            editFieldTypeSet.add(item.getFieldTypeEnum().getType());
        }
        return editFieldTypeSet;
    }
}
